﻿using RsCms.Core.User.Aggregate.Entities;
using RsCode;
using RsCode.Domain;
using Rswl.Common.Core.User.Aggregate.Entities;

namespace Rswl.Common.Core
{
    [ScopedService]
    public interface IUserRepository:IRepository<UserInfo>
    {
 
        IRepository<UserExtInfo> UserExtRepository { get; }
        IRepository<UserGradeInfo> UserGradeRepository { get; }
        IRepository<ShareInfo> UserShareRepository { get; }
        IRepository<ShippingAddressInfo> UserShipAddressRepository { get; }
        Task<UserInfo> GetUserInfoAsync(string userId);
        
       
        Task<bool> ExistUserAsync();
        Task SaveAsync(UserInfo info);
        
        
       
        Task SaveAsync(ShareInfo info);
        Task<ShareInfo> GetShareInfoAsync(string userId);
      
        Task<List<ShippingAddressInfo>> GetShippingAddressAsync(string userId);
        
        
      
        Task<List<UserInfo>> GetAdminAsync();
        Task<PageData<UserInfo>> GetPageAsync(int page, int rows);

        Task<List<UserExtInfo>> GetExtInfosAsync(string userId);

       

        Task<PageData<UserInfo>> PageFansAsync(int page, int rows, string userId);
    }
}
